const express = require('express');
const cors = require('cors');
const dotenv = require('dotenv');
const path = require('path');

// 加载环境变量
dotenv.config();

// 创建Express应用
const app = express();

// 中间件配置
app.use(cors());
app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded({ extended: true, limit: '50mb' }));

// 静态文件服务
app.use(express.static(path.join(__dirname, 'public')));

// 健康检查接口
app.get('/health', (req, res) => {
  res.status(200).json({
    status: 'ok',
    message: '服务器运行正常',
    timestamp: new Date().toISOString()
  });
});

// 导入路由
const imageRoutes = require('./src/routes/imageRoutes');

// 使用路由
app.use(imageRoutes);

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error('服务器错误:', err);
  res.status(err.status || 500).json({
    error: {
      message: err.message || '内部服务器错误',
      code: err.code || 'INTERNAL_ERROR'
    }
  });
});

// 404处理
app.use((req, res) => {
  res.status(404).json({
    error: {
      message: '接口不存在',
      code: 'NOT_FOUND'
    }
  });
});

// 启动服务器
const PORT = process.env.PORT || 9191;
const HOST = process.env.HOST || '0.0.0.0';

app.listen(PORT, HOST, () => {
  console.log(`服务器运行在 http://${HOST}:${PORT}`);
  console.log(`健康检查: http://${HOST}:${PORT}/health`);
  console.log(`API接口: http://${HOST}:${PORT}/analyze`);
});

// 优雅关闭
process.on('SIGINT', () => {
  console.log('正在关闭服务器...');
  process.exit(0);
});